/**
 * 微信API Mock数据
 * 用于开发环境模拟微信API响应
 */

// 模拟JSSDK配置接口
export function mockJssdkConfig() {
  console.log('生成模拟的JSSDK配置');
  return {
    code: 200,
    msg: '获取成功',
    data: {
      appId: 'wxee39deb8d9fd37e3', // 使用一致的appId
      timestamp: Math.floor(Date.now() / 1000).toString(),
      nonceStr: 'mock_nonce_' + Math.random().toString(36).substr(2, 8),
      signature: 'mock_signature_' + Math.random().toString(36).substr(2, 16)
    }
  };
}

// 模拟微信环境
export function mockWxJssdk() {
  // 如果window.wx已经存在，不再创建模拟对象
  if (window.wx) {
    console.log('wx对象已存在，不创建模拟对象');
    return;
  }
  
  console.log('创建模拟的微信JSSDK对象');
  
  // 创建模拟的wx对象
  window.wx = {
    config(options) {
      console.log('模拟wx.config被调用，参数:', options);
      // 模拟异步调用ready回调
      setTimeout(() => {
        if (typeof window.wx.readyCallback === 'function') {
          console.log('模拟调用wx.ready回调');
          window.wx.readyCallback();
        }
      }, 500);
    },
    
    ready(callback) {
      console.log('模拟wx.ready被设置');
      window.wx.readyCallback = callback;
    },
    
    error(callback) {
      console.log('模拟wx.error被设置');
      window.wx.errorCallback = callback;
      
      // 模拟一个成功的情况，不触发错误回调
    },
    
    getLocation(options) {
      console.log('模拟wx.getLocation被调用，参数:', options);
      
      // 模拟成功获取位置
      setTimeout(() => {
        if (options && options.success) {
          console.log('模拟成功获取位置');
          options.success({
            latitude: 39.90923, // 模拟北京位置
            longitude: 116.397428,
            speed: 0,
            accuracy: 10
          });
        }
      }, 1000);
    },
    
    openLocation(options) {
      console.log('模拟wx.openLocation被调用，参数:', options);
      
      // 模拟成功打开地图
      setTimeout(() => {
        if (options && options.success) {
          console.log('模拟成功打开地图');
          options.success({});
        }
      }, 500);
    },
    
    chooseLocation(options) {
      console.log('模拟wx.chooseLocation被调用，参数:', options);
      
      // 模拟用户选择位置
      setTimeout(() => {
        if (options && options.success) {
          console.log('模拟用户选择位置');
          options.success({
            latitude: 39.90923, // 模拟北京位置
            longitude: 116.397428,
            name: '天安门广场',
            address: '北京市东城区天安门广场'
          });
        }
      }, 1500);
    },
    
    // 新增部分常用的API模拟
    updateAppMessageShareData(options) {
      console.log('模拟wx.updateAppMessageShareData被调用:', options);
      if (options && options.success) options.success({});
    },
    
    updateTimelineShareData(options) {
      console.log('模拟wx.updateTimelineShareData被调用:', options);
      if (options && options.success) options.success({});
    },
    
    scanQRCode(options) {
      console.log('模拟wx.scanQRCode被调用:', options);
      if (options && options.success) {
        setTimeout(() => {
          options.success({ resultStr: 'mock_qrcode_result' });
        }, 1000);
      }
    },
    
    closeWindow() {
      console.log('模拟wx.closeWindow被调用');
      alert('模拟关闭窗口');
    }
  };
  
  console.log('模拟的微信JSSDK对象创建完成');
}

// 添加可选的故障模拟
export function mockJssdkFailure() {
  if (window.wx && window.wx.errorCallback) {
    console.log('模拟JSSDK配置失败');
    window.wx.errorCallback({
      errMsg: 'config:invalid signature'
    });
    return true;
  }
  return false;
}

export default {
  mockJssdkConfig,
  mockWxJssdk,
  mockJssdkFailure
}; 